# !/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time    : 2020/12/18 20:14
# @Author  : darknight
# @File    : response.py
# @Software: PyCharm
from django.http import JsonResponse


class RET:
    OK = 0  # 成功
    DBERR = 4001  # 数据库查询错误
    NODATA = 4002  # 无数据
    DATAEXIST = 4003  # 数据已存在
    DATAERR = 4004  # 数据错误
    SESSIONERR = 4101  # 用户未登录
    LOGINERR = 4102  # 用户登录失败
    PARAMERR = 4103  # 参数错误
    USERERR = 4104  # 用户不存在或未激活
    ROLEERR = 4105  # 用户身份错误
    PWDERR = 4106  # 密码错误
    REQERR = 4201  # 非法请求或请求次数受限
    IPERR = 4202  # IP受限
    THIRDERR = 4301  # 第三方系统错误
    IOERR = 4302  # 文件读写错误
    SERVERERR = 4500  # 内部错误
    UNKOWNERR = 4501  # 未知错误


res_map = {
    RET.OK: u"成功",
    RET.DBERR: u"数据库查询错误",
    RET.NODATA: u"无数据",
    RET.DATAEXIST: u"数据已存在",
    RET.DATAERR: u"数据错误",
    RET.SESSIONERR: u"用户未登录",
    RET.LOGINERR: u"用户登录失败",
    RET.PARAMERR: u"参数错误",
    RET.USERERR: u"用户不存在或未激活",
    RET.ROLEERR: u"用户身份错误",
    RET.PWDERR: u"密码错误",
    RET.REQERR: u"非法请求或请求次数受限",
    RET.IPERR: u"IP受限",
    RET.THIRDERR: u"第三方系统错误",
    RET.IOERR: u"文件读写错误",
    RET.SERVERERR: u"内部错误",
    RET.UNKOWNERR: u"未知错误",
}


class ApiResponse(JsonResponse):
    def __init__(self, code=RET.OK, msg="", data=None, *args, **kwargs):
        res = {
            "code": code,
            "msg": msg or res_map[code],
            "data": data,
        }
        if isinstance(args, dict):
            res.update(args)
        res.update(kwargs)

        super(ApiResponse, self).__init__(res)
